# 1. 以读方式打开文件，并读取内容。
# f = open("D:/readme.txt", "r")
# for line in f:
#     print(line)
# f.close()

# 2. 向文件中写入字符串
# file_name = input("请输入追加数据的文件: ")
# f1 = open(file_name, "w+", encoding="UTF-8")
# f1.write("向文件中写入字符串\n")
# f1.write("继续写入")
# f1.close()

# 3. 使用writelines()方法向文件中写入序列
# f1 = open("D:/readme.txt", "a")
# lst = ["html5", "css3", "JavaScript"]
# tup1 = ('2024', '2023', "2022")
# m1 = {'name':"Tom", 'city':'beijing'}
# f1.writelines(lst)
# f1.writelines('n')
# f1.writelines(tup1)
# f1.writelines('\n')
# f1.writelines(m1)
# f1.close()

# 4.二进制文件的读写
# 写文件
# file=open("D:/readme.dat",'wb+')
# file.write(bytes("我在学习python".encode()))
# file.close()
# # 读文件
# file=open("readme.dat",'rb')
# # file.flush()
# data=file.read().decode()
# print(data)
# file.close()

# 5.文件指针
'''
#seek(offset[,whence]) ，如果以文本文件打开时，参数whence只能为0.
#whence 有三个取值，0，1，2.
# 0：表示从文件开头开始计算偏移量。1：表示从当前位置开始计算偏移量。# 2：表示从文件末尾开始计算偏移量。
'''
# with open("D:/readme.txt","wb+") as fp:
#     fp.write(b"I'm study python")
#     # print("当前文件指针是：{}".format(fp.tell))
#     print(fp.tell())
#     fp.seek(-7,2) #在文本文件中，没有使用b模式选项打开的文件，只允许从文件头开始计算相对位置，从文件尾计算时就会引发异常。
#     con=fp.read(7) #
#     print(con)

# 6. csv文件中二维数据的读、写操作。
# datas=[['name','dep','eng','math','chinese'],
#        ['rose','法学',89,78,65],
#        ['mike','历史',56,'',44],
#        ['john','数学',69,80,72]]
# import csv
# filename='readme.csv'
# with open(filename,'w',newline="",encoding='UTF8') as f:
#     writer=csv.writer(f) #调用csv的writer()方法写入
#     for row in datas:
#         writer.writerow(row) #以行方式写入
# str1='' #用于拼接字符串的变量
# with open(filename,'r',encoding='UTF8') as f:
#     reader=csv.reader(f) #CSV模块的读方法
#     for row in reader:
#         for item in row: #按行方式进行拼接字符串
#             str1+=item+'\t'#拼接字符串
#         str1+='\n' #字符串换行
#         print(reader.line_num,row) #带行号读取输出
#     print(str1) #输出列表

# 上机作业
"""
1.假设有一个英文本文文件，编写程序读取其内容并将其中的大写字母变成小写字母。
"""
# f = open('D:/readme.txt', 'r')
# line = f.read()
# print(line.lower())
# f.close()

"""
2.当前目录下有一个文件temp.txt，分两行（第行7个数据）
保存了某市2023年7月第一周的最高和最低气温（单位：摄氏度），
其中，第1行为最高气温，第2行为最低气温。
请编写程序得到这一周的最高和最低气温，并计算全周的平均气温（第天平均温度的平均值）。
32 33 35 35 34 36 35
26 27 28 27 27 29 25
"""
# f = open('D:/temp.txt', 'r')
# max_temp = 0
# min_temp = 100
# total_temp = 0
#
# line = f.readline() # 读取最大气温
# new_line = line.replace('\n', '') # 去掉第一行的\n
# new_list = new_line.split(' ')   # 以空格分隔生成新的列表
# for temp in new_list: # 判断病找到最大气温
#     total_temp += int(temp)
#     if int(temp) > max_temp:
#         max_temp = int(temp)
# print(f"最大气温: {max_temp}") # 输出最大气温
#
# # 当前文件指针指向的是第二行
# # 继续是哦用readline读取第二行
# line = f.readline() # 读取最小气温
# new_line = line.replace('\n', '') # 去掉换号符
# new_list = new_line.split(' ') # 以空格分隔
# for temp in new_list: # 判断病找到最低气温
#     total_temp += int(temp)
#     if int(temp) < min_temp:
#         min_temp = int(temp)
# print(f"最低气温: {min_temp}") # 输出最低气温
# print(f"全周的平均气温: {total_temp / 7}")
# f.close()

"""
3.假设有文件score.txt保存着某班学生的python课程成绩，
共有姓名和总评成绩两列。请查找最高分和最低分的学生。
周杰伦 85
刘若英 92
张学友 86
张三丰 76
云朵 65
小马哥 89
"""
maxperson = "None"
minperson = "None"
maxScore = 0
minScore = 100
my_dict = {}
f = open('D:/score.txt', 'r', encoding='UTF-8')

line = f.readline()
while line:
    new_line = line.strip() # 去掉一行的开头和结尾的空白字符
    new_list = new_line.split(' ')
    my_dict[new_list[0]] = int(new_list[1])
    line = f.readline()
f.close()

for k, v in my_dict.items():
    if int(v) > maxScore:
        maxScore = int(v)
        maxperson = k
    if int(v) < minScore:
        minScore = int(v)
        minperson = k

print(f"最高分: {maxperson}")
print(f"最低分: {minperson}")